package org.hfy.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.hfy.dto.warehouse.InboundQueryDTO;
import org.hfy.entity.Inventory;
import org.hfy.entity.Outbound;

import java.util.List;

/**
 * 出库管理Mapper接口
 * 
 * @author hfy
 * @version 1.0
 */
@Mapper
public interface OutboundMapper extends BaseMapper<Outbound> {

    /**
     * 分页查询可出库的库存列表
     * 
     * @param page 分页对象
     * @param queryDTO 查询条件
     * @return 可出库的库存列表
     */
    IPage<Inventory> selectAvailableStockPage(Page<Inventory> page, @Param("query") InboundQueryDTO queryDTO);

    /**
     * 分页查询出库记录
     * 
     * @param page 分页对象
     * @param queryDTO 查询条件
     * @return 出库记录列表
     */
    IPage<Outbound> selectOutboundRecordsPage(Page<Outbound> page, @Param("query") InboundQueryDTO queryDTO);

    /**
     * 根据入库单ID查询出库记录
     * 
     * @param inboundId 入库单ID
     * @return 出库记录列表
     */
    List<Outbound> selectByInboundId(@Param("inboundId") Long inboundId);

    /**
     * 生成出库单号
     * 
     * @return 出库单号
     */
    String selectMaxOutboundNo();
} 